home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-11 | 39.5 KB | 1,051 lines |
- Newsgroups: comp.os.linux,comp.os.linux.announce,comp.answers,news.answers
- Path: senator-bedfellow.mit.edu!enterpoop.mit.edu!uhog.mit.edu!wupost!howland.reston.ans.net!agate!doc.ic.ac.uk!uknet!mcsun!julienas!geocub!labri.greco-prog.fr!corsini
- From: corsini@labri.greco-prog.fr
- Subject: Linux Frequently Asked Questions 6/6 [monthly posted]
- Message-ID: <PART6_739793198@geocub.greco-prog.fr>
- Followup-To: poster
- Summary: Linux, a small and free unix-like for 386-AT computers.
- Sender: corsini@greco-prog.fr (Marc-Michel CORSINI)
- Reply-To: linux@numero6.greco-prog.fr
- Organization: Greco Prog. CNRS & LaBRI, Bordeaux France
- Date: Fri, 11 Jun 1993 10:06:42 GMT
- Approved: news-answers-request@MIT.Edu
- Expires: Sun, 25 Jul 1993 10:06:38 GMT
- Lines: 1034
- Xref: senator-bedfellow.mit.edu comp.os.linux:45908 comp.os.linux.announce:782 comp.answers:958 news.answers:9312
-
- Archive-name: linux-faq/part6
-
- Last-Modified: 93/06/11
- Version: 1.19
-
- *********************************************************
- * *
- * Answers to Frequently asked questions about Linux *
- * *
- *********************************************************
-
- This post contains Part 6 of the Linux FAQ (6 parts).
- It must be read *after* the 5 first parts.
-
- ===================================8<====>8============================
- CONTENTS (of this part)
-
- XIV. EVERYTHING FOR PRINTING (part5)
- XV. UUCP/NEWS/MAIL for LINUX (part6)
-
- ===================================8<====>8============================
-
-
-
- XIV. EVERYTHING FOR PRINTING
- =============================
- **** This is the lpd FAQ version 1.3 (last update 8th june), this
- **** section is maintained by Brian McCauley. Please send any
- **** suggestion to: B.A.McCauley@bham.ac.uk
-
- XIV.01) What _is_ the Linux lpr/lpd package?
-
- ANSWER: To quote the net-FAQ:
-
- Lpr is a utility that is used to print files out to local and remote
- printers. As with all networking, there are configuration files which
- have to be tailored to your needs. These files are concerned with
- access control, accounting and page setup of your printer(s). Now all
- control of the printer is performed by a process called lpd
-
- Lpd is a laser printer daemon (yes I know an epson isn't a laser
- printer but thats besides the point). The program lpd is normally
- started in /etc/rc.local in either the forground or the background.
- What happens is that lpd will sink back as a daemon, only ever being
- invoked when a printer request is generated. lpd itself has some
- options which are of possible intrest to some people chiefly that of
- the '-l' flag which causes lpd to log requests recieved from the
- network (useful for debugging). The other option is for what port lpd
- should listen for data on and is generally not used.
-
- [ Note: lp really stands for line printer but as technology has
- advanced laser printer makes more sense. Note also that lpr can be
- used for queuing requests to use any specialised resource on a network
- not just hardcopy output devices. ]
-
-
- XIV.02) What is _the_ Linux lpr/lpd package?
-
- ANSWER: Up until 28th May 1993, as far as there is a definitive Linux
- version of anything _the_ Linux lpr/lpd is <bir7@leland.stanford.edu>
- Ross Biro's port of the BSD sources dated 20th November 1992 (so if
- you're used to AT&T's you'll find some differences). Ross's binaries
- and the diffse wer found in:
-
- tsx-11.mit.edu:pub/linux/binaries/usr.bin/lpr.tar.Z
- sunsite.unc.edu:pub/Linux/system/Daemons/lpr.tar.Z
-
- The SLS file lpr.tgz on disk b2 contained the same stuff.
-
- In addition to the standard BSD lpr capabilities Ross Biro's port
- should have had better support for serial printers (but it didn't work
- in the old binaries).
-
- Ross's port was not based on the latest BSD sources (by about 3 years,
- '88 vs '91). His new release will also be based on these sources which
- can be found are at:
-
- gatekeeper.dec.com and /afs/ir.stanford.edu/src/...
-
- However this changed as of about 28th May 1993 so from now on this
- version will be called the "old" binaries. On or about that date two
- different new releases of lpd appeared. One of these was a version of
- Ross's with bug fixes in:
-
- sunsite.unc.edu:pub/Linux/system/Daemons/lpr.tar.z
- tsx-11.mit.edu:pub/linux/binaries/usr.bin/lpr.tar.z
-
- The other is a port of the '91 BSD sources by
- <waltje@uWalt.NL.Mugnet.ORG> Fred van Kempen port and is availble as
- source:
-
- tsx-11.mit.edu:pub/linux/packages/net/net-2/sources/lpd/
-
- or as part of the net-2 binary release in:
-
- tsx-11.mit.edu:pub/linux/packages/net/net-2/binaries/net-std.tar.z
-
- Original '91 BSD sources are all over the place.
-
- ftp.uu.net:systems/unix/bsd-sources/usr.sbin/lpr/
- src.doc.ic.ac.uk:unix/bsd-sources/usr.sbin/lpr/
-
- to name but two. The BSD sources have unGNU things in their Makefiles
- so they don't compile ``out of the box''.
-
- Ross agrees that Fred's version should be thought of as _the_ Linux
- lpd package. I <B.A.McCauley@bham.ac.uk> have not had a chance to look
- at the differences in detail yet, but most of this FAQ refers to the
- BSD lpd package or Linux in general so this is probably not too
- important.
-
- There are some other versions of lpd stuff about but I have to draw
- the line somewhere. If anyone whants to maintain FAQ sections on these
- they are welcome to do so. The other versions include plp and the ka9q lp
- facility. There are also rumours of SysV spoolers being ported.
-
-
- XIV.03) How do I get lpr to work properly other than for root? Where
- do the files go and what should their permissions be?
-
- ANSWER: There is quite a bit of variation between the various releases
- but I'll try where possible to offer solutions that are universally
- applicable. Put /etc/lpd& in your /etc/rc or /etc/rc.local (usually in
- /etc/rc.local after you start syslogd (if you use syslogd)).
-
- Set the group fields of the file permissons/ownership as follows:
-
- -rwxr-s--- 1 root daemon 37892 Nov 19 23:32 /etc/lpd
- -rwx--s--x 1 root daemon 21508 Nov 19 23:32 /usr/bin/lpc
- -rws--s--x 1 root daemon 17412 Nov 19 23:32 /usr/bin/lpq
- -rwx--s--x 1 root daemon 17412 Nov 19 23:32 /usr/bin/lpr
- -rwx--s--x 1 root daemon 17412 Nov 19 23:32 /usr/bin/lprm
- -r-xr-xr-x 1 root daemon 2816 May 10 13:37 /usr/bin/lptest
- srwxrwxrwx 1 root daemon 0 Feb 4 20:54 /dev/printer
-
- ...and for each of the spool directories listed in the sd fields of
- /etc/printcap...
-
- /usr/spool/lpd:
- total 5
- drwxrwxr-x 2 root daemon 1024 May 18 23:00 .
- drwxr-xr-x 11 root root 1024 Feb 19 20:56 ..
- -rw-rw-r-- 1 root daemon 4 May 18 23:00 .seq
- -rw-rw-r-- 1 root daemon 18 May 18 23:00 lock
- -rw-rw-r-- 1 root daemon 25 May 18 23:00 status
-
- Note these 3 files are created by lpr and lpd so if you've never
- run these they could be missing so touch them into being.
-
- In Fred's port the group is ``lp'' not ``daemon''. You don't need the
- socket /dev/printer for Fred's port as it keeps it's socket in
- /tmp/.printer and creates/deletes it as needed.
-
- Some of these permissions may be overkill so don't be surprised if
- your system works with different permissions. The fact that lpq needs
- to be suid root is inelegant and may change in the future. People tell
- me that lpr must be setuid(root) but I've not seen evidence that this
- is really the case as long as the file permissions on the spool queues
- are right. Still as far as I know lpr is designed to be secure when
- installed setuid(root).
-
- Alternative approach: just make lpc, lpr and lprm setuid(root) then
- you can almost forget the file permissions on the spool queues!
-
- You're free to choose different directories for the executables on
- your system (notably lpc is usually in /etc even though it has
- commands that are useful to non-root).
-
- There location of master lpd lock file is fixed at compile time. It is
- either in /usr/spool/lpd.lock or /var/spool/lpd/lpd.lock depending on
- which version of lpd you get.
-
- My advise is keep your primary spool queue in /usr/spool/lpd and make
- /var a symlink to usr or keep it in /var/spool/lpd and make /usr/spool
- a symlink to ../var/spool. This gives the greatest compatibility with
- the pathnames that are compiled into the various distributed binaries.
-
- The main configuration file is /etc/printcap although the old binaries
- look for it in /usr/etc/. The old binaries' README says hosts.equiv
- and hosts.lpd files are looked for in /etc/inet but again the more
- accepted convention is to locate them in /etc.
-
- Since, IMHO, working out in which particular etc directory each file
- should reside is tedious, I would advise having only one:
-
- mv -i /usr/etc/inet/* /etc/inet/* /usr/etc/* /etc/
- rmdir /usr/etc/inet /etc/inet /usr/etc
- ln -s ../etc /usr/etc
- ln -s . /etc/inet
-
- [But make sure the files in /usr/etc and /etc/inet are not already
- symlinks into /etc or you'll be in deep water.]
-
- This makes your /etc huge but I think it's safe as I'm not aware of
- any packages that require different files or the same name in /etc and
- /usr/etc. [Health warning: this is IMHO - other people have different
- ideas.]
-
-
- XIV.04) What are all these diretrories for? (/etc, /usr/etc, /etc/inet,
- /usr/spool, /var/spool)
-
- ANSWER: This is one to which I can't find a staight answer.
-
- For various reasons including the difficulties of fsck'ing / some
- people like to put all things that aren't needed during bootstrap in
- /usr so that / is as small as possible. They therefore move
- unessential big files (usually the binaries) from /etc/ to /usr/etc/.
-
- Unless you know what you are doing I'd advise keeping it all in /etc
- with /usr/etc and /etc/inet being symlinks back to /etc. (In fact
- these links are probably soon to be redundant as most recent binaires
- now look in /etc/.)
-
- The alternative approach is to have a real /usr/etc directory
- containing all the non-essential stuff and make symlinks to each file
- therein from its namesake in /etc.
-
- Also a few people like all their internet stuff in /etc/inet but as
- recent binaries excpect to find this stuff in /etc they must create
- links for each file from /etc into /etc/inet.
-
- If you want to spread out your configuration files for the sake of
- tidiness then a better solution is to have a directory tree called
- /conf and make the files in /etc symlinks into this tree.
-
- To avoid the problem of your /usr filesystem filling up as a result of
- stuff in spool queues some poeple perfer to keep their spool queues
- and such like in a separate filesystem called /var. If you don't have
- a /var file system then you should make /var a symlink to usr. If you
- _do_ have a /var filesystem to may want to make /usr/spool a symlink
- to ../var/spool so that any programs expecting to find /usr/spool will
- not be dissapointed.
-
-
- XIV.05) Why do I get ``jobs queued, but cannot start daemon'' or
- ``lpc: connect: No such file or directory'' ?
-
- ANSWER: Firstly this "start" in the context of this error really means
- "wake". If ``ps ax'' does not reveal a lpd then you daemon has died
- (or was never started).
-
- If you so have an lpd then you are having trouble with the socket
- connection to lpd. I don't really understand this but the problem was
- common in early days with the old binaries but developments in the
- TCP/IP code in the kernel fixed it for most people. Using the new lpd
- from the net-2 package without the net-2 kernel stuff sometimes gives
- this problem.
-
- When I get it I find that kill and restarting lpd a few times will
- eventually get rid of the problem. There has also been a suggestion
- that recompiling your kernel without TCP/IP at all can help. If
- linux-0.99pl10 with it's all new TCP/IP stuff doesn't fix this then
- further reserch is probably called for.
-
-
- XIV.06) Where do I get a printcap for a xxxxx?
-
- ANSWER: This question is essentially meaningless - see next question.
-
-
- XIV.07) What is the content of /etc/printcap?
-
- ANSWER: Given the similarity in appearence and name between
- /etc/termcap and /etc/printcap one could be forgiven for assuming that
- they contain analogous infomation. This is not the case. Whereas
- termcap contains informations about terminal *types* - (mostly escape
- seqences) printcap contains information about *specific* printers
- (like the directory that holds the spool queue and the device name of
- the printer). The information about a printer model's escape sequences
- and so on are held in the various filters which are _programs_ called
- by lpd to drive the printer. /etc/printcap simply gives the locations
- of these filters. For details RTFM(printcap). [Alternatively the
- net-FAQ has a summary of some of the more important fileds.]
-
- One last point you should always specify ``suppress header'' ``:sh:''
- unless you have *text* (_not_ postscript) printer and want banners. On
- a text printer they are usually a waste of time and paper. On a
- postscript printer they usually stop your printer working. (See the
- banners question for further expanation).
-
-
- XIV.08) What is the format of a /etc/printcap?
-
- ANSWER: Ideally RTFM(termcap) (yes, I said *termcap*) but since most
- people don't have TFM(termcap) here are the essentials.
-
- Lines starting # are comments (as you might have guessed).
-
- For each printer usable from the lpr command on your system there is
- one logical line in the file. For the sake of readability each logical
- line may be spread over several physical lines by making the last
- character on all but the last physical line a backslash.
-
- Each logical line has the following format:
-
- name1|name2|name3:string_capability=string:\
- :numeric_capability#number:boolean_capability:
-
- The leading spaces and colon on the second line are for readability
- only.
-
- A printer can have as many names as you like but conventionally the
- final name is used as a longhand description of the printer. (Still
- people are free to say `lpr -P "Fred's grotty teletype"' if that's
- the description you've given.)
-
- The list of capabilities can be as long as needed and the order is not
- significant. Each ``capability'' is denoted by a two character code.
- (The name ``capability'' comes form the file format's termcap heritage
- - parameter or attribute would be a more sensible terms.) [Note from
- Ross Biro: capabilities with 3 character names don't work properly
- which is why the serial port stuff in the old binaries failed.]
- Capabilities having string value and have a = delimiter between the
- capability name and the value while those having a numeric value use a
- # (actually they can use either a # or an =). Boolean ``capablilties''
- are true if they appear in the list and false if they do not.
-
- Special characters in a string value can be expressed using `\'-escape
- sequences as in C; in addition, `\E' stands for ESC. `^' is also a
- kind of escape character; `^' followed by CHAR stands for the
- control-equivalent of CHAR. Thus, `^a' stands for the character
- control-a, just like `\001'. `\' and `^' themselves can be represented
- as `\\' and `\^' respectively. `\:' for `:' seems to work but the
- source code contains a comment to the effect that it is unsafe and
- `\072' is a better idea.
-
- Example:
-
- lp|bam|BAM's Epson FX-80:lp=/dev/lp1:sd=/usr/spool/lp1:sh:mx#0:\
- :df=/usr/local/lib/magic-filter/lp.df:\
- :if=/usr/local/lib/magic-filter/lp.if:
-
- Name is lp (this is the printer that lpr uses by default). It's also
- known as bam or "BAM's Epson FX-80".
-
- The printer is on /dev/lp1 (aka AT-bus LPT1:). I don't want a burst
- page. I don't want a file length limit. Files queued by `lpr -d' are
- passed through /usr/local/lib/magic-filter/lp.df and those queued by
- `lpr' through /usr/local/lib/magic-filter/lp.lf.
-
- See also the next question.
-
-
- XIV.09) My /etc/printcap looks identical to someone else's but it
- doesn't work - why?
-
- ANSWER: See if lpc stat reports a printer called ` :'. The last
- character on a continued line must be a \. If there are whitespace
- characters after the \ then it doesn't register the next line as a
- continuation.
-
-
- XIV.10) What's the minimum /etc/printcap?
-
- ANSWER: This is a silly question but it _is_ frequently asked. The
- answer is ``lp:sh'' (that's 6 bytes including the required linefeed
- character on the end). To use this /etc/printcap you must make /dev/lp
- a symlink to your printer and create your spool queue directory as
- /usr/spool/lpd. (You might think that if you wanted banner pages you
- could loose the ``:sh'' but the termcap syntax requires at least one
- capability per entry).
-
-
- XIV.11) How do I prevent the `staircase effect'?
-
- ANSWER: Unix terminates each line of a file with a linefeed but not a
- carriage return so taken literally a Unix text file printed on an
- ASCII device will start each line below the end of the previous line.
- Some printers can be set to treat "linefeed" as "carriage return,
- linefeed", others can't. If yours can then do simply do that. If the
- printer cannot be fixed create a shell script filter that reads:
-
- #!/bin/sh
- if [ $1 = -c ]; then
- cat
- else
- sed -e s/$/^M/
- fi
- echo -ne \\f
-
- where ^M is a carriage return character not a ^ followed by a M. To
- type ^M in emacs use the sequence C-q C-m and in vi use C-v C-m.
- Conventionally this script is called /usr/lib/lpf. The test of $1
- allows the isertion of carriage returns to be switched off by the `-l'
- switch on lpr.
-
- Alternatively your printer may have an escape sequence that will set
- the way it handles linefeed characters. A simple filter that uses an
- `echo -ne' command to send this sequence may be appropriate.
-
- #!/bin/sh
- # Filter for HP printers to treat LF as CRLF
- echo -ne \\033\&k2G
- cat
- echo -ne \\f
-
- [Ross Biro's new release includes a slightly more complex filter
- stript called /usr/lib/hpof that does this and a few other things to
- make an HP printer behave sensibly even if it was in the wrong
- language when you started.]
-
-
- XIV.12) How do I get my printer to go back to the default font after
- each printout?
-
- ANSWER: Either make your filters do it or define the `tr'
- ``capability'' in /etc/printcap to be your printer's font reset
- command. For details of the format of this string see the question on
- the format of printcap. This may not work if a printout crashes in the
- middle of an escape sequence - putting a lot of ^@ on the front may
- help but this probably won't be enough it you were printing raster
- graphics when the filter died.
-
-
- XIV.13) How do I prevent a formfeed at the end of every printout?
-
- ANSWER: If you don't have an `if' specified in /etc/printcap then lpd
- will automatically put a formfeed at the end of each file. If you're
- using a filter then it's up to the filter to decide if it wants to put
- a formfeed. To disable formfeed completely if you don't have an `if'
- put :ff=: in your /etc/printcap. But please note this suppresses the
- formfeed that would usually be printed if a filter dies. If you want
- formfeeds after text printouts but not on printouts printed with `lpr
- -l' then create the following `if' filter:
-
- #!/bin/sh
- cat
- if [ "$1" != -c ]; then
- echo -ne \\f
- fi
-
- If you want a formfeed after `lpr -l' to be optional you can misuse the
- `-i' switch to suppress the formfeed with the following trick (after
- all `lpr -i -l' would usually not be implemented).
-
- #!/bin/sh
- cat
- # use lpr -i -l to print raw without trailing formfeed
- if [ "$1" != -c -o "$4" = -i0 ]; then
- echo -ne \\f
- fi
-
-
- XIV.14) How do I use a printer that's doesn't present a normal
- device interface?
-
- ANSWER: [Firstly I'll explain the question.] The most common example
- is a printer that is connected via a network in some strange way. For
- example consider a printer conneccted to a host running some esoteric
- OS with which you can only communicate via E-mail. To use this printer
- without going through lpr you would say something like:
-
- | uuencode tmp | mail printer-request@eosteric
-
- in place of:
-
- > /dev/lp
-
- To use such a printer through lpr the ``lp'' capability of the print
- queue can be directed to /dev/null and _each_ filter must must
- explicitly uuencode and mail its output. In more complex cases if you
- already have an ``if'' or ``of'' filter for a strangely connected
- printer then other filters can pass their output to/through this
- filter to avoid duplication of effort. In this case the ``if'' filter
- should usually be called with the ``-c'' switch to minimise the
- further manipulations if performs.
-
-
- XIV.15) How do I get burst/banner pages?
-
- ANSWER: For a simple text printer (in particular not postscript) and a
- simple text banner simply take :sh: out of the printcap record. If you
- want to prevent the banner comming out in whatever font was last used
- on the printer then define the `tr' ``capability'' to be your
- printer's font reset command.
-
- If you want a fancy cusomised banner (or have a postscript printer)
- leave :sh: in the printcap and make each of your filters print the
- banner. All the information to put on the banner is included in the
- filter's positional parameters. RTFM(printcap) for details. [ If
- you're using <B.A.McCauley@bham.ac.uk>'s magic-filter package then
- call the code to print the banners from the config script. ]
-
-
- XIV.16) How do I print text on a PS printer?
-
- ANSWER: You need a filter based on a program that converts ascii to
- postscript. The most well known of these is ``enscript'' but it's also
- the hardest to find. Others include ``a2ps'' and ``mpage'' (for
- details of these see the periodic c.o.l.a posting "How to print under
- Linux" by <gtaylor@god.hounix.org> Grant Taylor)
-
- The nearest thing to enscript that an archie search revealed was a
- package called ``nenscript-1.13++.tar.Z'' deep in the guts of
- gatekeeper.dec.com which appears to do the job but it's prone to
- trimming off the tops of your pages. (It didn't compile ``out of the
- box'' with the GNU libs but all it needed was one #undef.)
-
- [I've not looked into these in detail as I don't have a PS printer. I
- would like someone to send me an exaple of a filter that they use
- using one of these.]
-
-
- XIV.17) Why do files with a lot of graphics get truncated?
-
- ANSWER: Usually because you've got a limit set on the maximum size
- file that can sit in the spool queue. Put `mx#0' in your printcap.
-
-
- XIV.18) Why doesn't `lpr -i' work?
-
- ANSWER: To get lpr -i to work you need a filter istalled as `if' that
- implements it. The -i switch is simply passed on by lpd to the filter.
- There is such a filter usually called /usr/lib/lpf that can be obtained from
- bsd source archives in the directory bsd-source/lpr/filters. It's also part
- of Fred's port but he put it in /usr/bin/. If you whant to use this program
- but still want your filter to do some printer specific initialisation then
- write script thus:
-
- #!/bin/sh
- # My initialisation stuff goes here
- exec /usr/lib/lpf $*
-
-
- XIV.19) Why doesn't `lpr -p' work?
-
- ANSWER: Because it's broken. lpd always thinks that the printer is 0
- characters wide regardless of what printcap says. This is still broken
- in Ross's new release and Fred's port of the '91 sources. Looking at the
- sources the fix for Fred's port appears to be:
-
- -------------------------------Cut Here-------------------------------------
- *** printjob.c.old Sat Feb 27 14:07:01 1993
- --- printjob.c Sun Jun 6 11:02:36 1993
- ***************
- *** 265,271 ****
- */
- for (i = 0; i < 4; i++)
- strcpy(fonts[i], ifonts[i]);
- ! strcpy(width+2, "0");
- strcpy(indent+2, "0");
-
- /*
- --- 265,271 ----
- */
- for (i = 0; i < 4; i++)
- strcpy(fonts[i], ifonts[i]);
- ! sprintf(&width[2], "%d", PW);
- strcpy(indent+2, "0");
-
- /*
- ***************
- *** 1081,1087 ****
- FF = DEFFF;
- if ((PW = pgetnum("pw")) < 0)
- PW = DEFWIDTH;
- - sprintf(&width[2], "%d", PW);
- if ((PL = pgetnum("pl")) < 0)
- PL = DEFLENGTH;
- sprintf(&length[2], "%d", PL);
- --- 1081,1086 ----
- ----------------------------------Cut Here------------------------------
-
- This patch is untested as I don't have a complete set of net-2 include
- files on my machine yet.
-
- One other thing: lpd calls pr by full pathname so if you keep pr
- somewhere different from where lpd looks you will need a symlink.
- Where lpd expects to find pr varies from version to version but I
- think /usr/bin/pr is the usual place.
-
-
- XIV.20) Why does lprm say `too many users'?
-
- ANSWER: This was a bug in the C library in the scandir() function
- which failed when an unsorted directory list was requested. This has
- been fixed now so just get a new libc.so. Alternatively there is a
- lprm with a workround (by toy@soho.crd.ge.com) in:
-
- sunsite.unc.edu:/pub/Linux/system/Daemons/lprm-fix.tar.z
-
-
- XIV.21) Why does lpc complain that it hasn't stopped a daemon?
-
- ANSWER: There's one lpd process that runs all the time and it spawns
- off children to handle each printer as needed. These children leave
- lock files lying about so lpc thinks that they are still running and
- tries to kill them. Was a bug but it was not serious and is fixed in
- the latest releases.
-
-
- XIV.22) Why does
-
-
- XIV.23) How do I print over a Network?
-
- ANSWER: To print on the printer "foo" connected to the machine
- "bar.baz.net" from the machine "mine.baz.net" you put an entry like
- this in your /etc/printcap (on mine.baz.net):
-
- foo:lp=:rm=bar.baz.net:rp=foo:sd=/usr/lpd/spool/foo:
-
- and, of course, create the spool directory /usr/lpd/spool/foo.
-
- There's no point specitying filters and the like in
- mine.baz.net:/etc/printcap as it's the one in
- bar.baz.net:/etc/printcap that will get used.
-
- On the machine bar.baz.foo, you need to put "mine.baz.net" on a line
- by itself in either /etc/hosts.equiv or /etc/hosts.lpd; note that
- putting it in /etc/hosts.equiv will allow for unauthenticated logins as
- well as printing. /etc/hosts.lpd is printing only.
-
- [ Editors note: I realise there are more questions about net printing
- but I don't know them. If you find any let me know (with answers if
- possible). See also the net FAQ ]
-
-
- XIV.24) Which /dev/lp* is my printer?
-
- ANSWER: On an XT bus system LPT1: becomes /dev/lp0 (major=6, minor=0),
- on an AT LPT1: becomes /dev/lp1 (major=6, minor=1). To be more
- precise:
-
- Name Major Minor I/O address
- lp0 6 0 0x3bc
- lp1 6 1 0x378
- lp2 6 2 0x278
-
-
- XIV.25) When the kernel boots it says `using polling driver,' is
- there an interrupt driven driver?
-
- ANSWER: Yes the latest kernels support parrallel port IRQs but to
- enable them you must ether: edit the IRQ number into lp_table[] in
- lp.c in the kernel source, or use `lpcntl'. The interrupt driver uses
- less processor time and gives a faster throughput but sometimes one
- may choose sacrifice this to free up an IRQ line. If your printer is
- /dev/lp1 using IRQ 7 put:
-
- /etc/lpcntl /dev/lp1 7
-
- in your /etc/rc.
-
- If you don't have lpcntl get it from:
-
- tsx-11.mit.edu:/pub/Linux/BETA/lp/lpirq.4.tar.Z
-
-
- XIV.26) What's the difference between the polling driver and an the
- interrupt driven one?
-
- ANSWER: A polling sits in a loop repeatedly reading the port hardware
- to see if it is ready for another character and then gives it one. An
- interrupt driver goes to sleep and is woken by the port hardware
- (using a hardware interrupt) when it wants another character. Polling
- drivers are easier to write but in multitasking environments they are
- a bad thing.) I have seen some OSs for PC/AT machines where the
- polling printer drivers are more reliable than the interrupt ones but
- I doubt this is the case in Linux :-).
-
-
- XIV.27) How do I write filters?
-
- ANSWER: In normal Unix terminology, filters are just programs (so they
- must have execute permission) that read a stream from their standard
- input and write to their standard output.
-
- lpd filters are filters in the sense that thay read from their STDIN
- and write to their STDOUT but are not necessarily true filters in that
- they may assume that their standard input is a file and perform
- lseek() operations on it. I'm not sure that such filters are strictly
- conforming but they seem to work OK.
-
- All lpd filters must conform to a particular command line syntax (or
- more often simply ignore command line parameters). For details of the
- command line parameters RTFM(printcap).
-
- It's easier to debug filters if you test them in an immediate shell
- before you install them. (If your filter make use of its command line
- arguments you'll have to specify them too).
-
- my-new-filter <file >/dev/lp1
-
- If you want to write a shell script filter it must have a #!/bin/sh
- header. Here for example is my Epson FX-80 dvi filter:
-
- #!/bin/sh
- /usr/TeX/bin/dvips -f | \
- /usr/bin/gs -q -sDEVICE=eps9high -r120x216 -dNOPAUSE -sOutputFile=- -
-
- More good specific examples can be found in the peroidic c.o.l.a
- posting "How to print under Linux" by <gtaylor@god.hounix.org> Grant
- Taylor. The document also explains to print out the types of file you
- wouldn't normally have a filter for eg. texinfo. (Not that you can't
- have a texinfo filter - I have one but it does leaver the printer
- idling for a long time while tex runs.)
-
-
- XIV.28) I've written a filter in shell script which works OK when I
- use it from the shell prompt but fails when I tell lpd to use it?
-
- ANSWER: You may need a #!/bin/sh header. You may also need to set PATH
- within the script since the daemon's PATH may not have everything you
- need.
-
-
- XIV.29) When should I define an `of' filter?
-
- ANSWER: Never. (Well strictly speaking there are circumstances but
- you're unlikey to meet them until you're so familar with lpd that you
- won't need this FAQ.)
-
-
- XIV.30) Where do I get filters for given printers?
-
- ANSWER: From BSD source archives (I think). [Editors note: I need a
- better answer here ].
-
- If you already have a program to print say DVI on your printer by some
- mechanism then making it into a filter is usually a matter of writting
- trivial shell script - see this FAQ. If the program you are using
- insists on reading a names file as input see the next question. Text
- mode filters are trivial too (see this FAQ) unless you want lpr to
- have a choice of fonts in which case they are slightly harder than
- trivial. You will probably want to insert and `echo -ne' command at
- the beginning and end of your filter to set up the font etc to your
- liking.
-
-
- XIV.31) How do I get a program that won't read from STDIN to act as
- a filter?
-
- ANSWER: For example dvilj2p insists on a named file as its input (and
- what's more expects one with a .dvi suffix). To make a dvi filter for
- a laserjet you'll have to capture the STDIN into a temporary file.
-
- #!/bin/sh
- cat >/tmp/$$.dvi
- dvilj2p /tmp/$$
- rm /tmp/$$.dvi
-
- The problem with this kludge is that is may have a very high disk
- overhead. (In the long term dvilj2p should be fixed).
-
- If you have procfs you can use the following trick:
-
- #!/bin/sh
- ln -s /proc/self/fd/0 /tmp/$$.dvi
- dvilj2p /tmp/$$
- rm /tmp/$$.dvi
-
- Note: If it wasn't for the fact that dvilj2p adds a .dvi suffix you
- wouldn't need the temporary symlink and could just specify
- /proc/self/fd/0 directly. People who use this trick often usually keep
- permanent symlinks to /proc/self/fd/* in /dev.
-
-
- XIV.32) The set of filters supported by lpd seem strange - why
- aren't there filters for Postscript, GIF, TIFF and so on?
-
- ANSWER: History. You can, in fact, use any of the filters (with the
- possible exception of the default filter) for any reason. If you're
- never going to use Benson Varian raster files you could use the -v
- switch for GIF files. Remember that if you create a filter for a file
- format that takes a long time to process then your printer may sit
- idle between print jobs even when there are things in the queue.
-
- If you are on a network remember that the filter setups go on the
- print server so you will need to consider other people's needs too.
- One way to avoid running out of filter options is to define several
- logical printers in /etc/printcap that all point to the same physical
- one. One small problem with this is that you have no control over the
- order in which files from separate queues are printed. Another way to
- avoid running out of possible types is to use magic filters.
-
-
- XIV.33) What are magic filters?
-
- ANSWER: Magic filters deduce their input files' types from `magic
- numbers' (distictive byte patterns at particular offsets). Magic
- filters are usually perl scripts, shell scripts or C programs that
- simply identify the file type then call the appropriate non-magic
- filter. Blatent plug :-) I <B.A.McCauley@bham.ac.uk> have a generic
- magic filter bash script that selects the right filter to use based on
- the output of the `file' command. With my magic ``dvi'' filter (and
- 3 associated non-magic filters) I can do things like:
-
- lpr -d file1.dvi file2.div.Z file3.ps file4.texinfo.z
-
- (BTW confguring lpr to handle texinfo files getting a bit silly - see
- previous question).
-
- This is now at:
-
- tsx-11.mit.edu:pub/linux/sources/usr.bin/magic-filter-0.3.tar.gz
-
- (Although the release number will doubtless change in future).
-
- Other examples of magic filters (a simpler shell one and one in C)
- can be found in the periodic c.o.l.a posting "How to print under
- Linux" by <gtaylor@god.hounix.org> Grant Taylor.
-
- Magic filters should never specified as `of' as the output filter only
- gets called once if a number of files are printed without a gap.
-
- IMHO magic filters as `if' can also cause problems as they may prevent
- you, say, _listing_ a PostScript or nroff file. (Other people disagree
- as, if you are making your printer available on a network, it can be a
- pain having people accidently listing ps files.)
-
-
-
- XV. UUCP/NEWS/MAIL for LINUX
- ============================
- *** This section is an expert of the UUCP-NEWS-MAIL-FAQ, posted twice
- *** monthly in c.o.l.a. This section and the complete FAQ about UUCP
- *** and others is written by Vince Skahan (vince@victoria.sea.wa.us),
- *** mail him for any corrections and information.
- ***
- *** Last update 93/06/11
-
-
- XV.A. General Information
- XV.B. UUCP
-
- XV.C. News
- XV.D. Mail
-
-
- XV.A. General Information
- ~~~~~~~~~~~~~~~~~~~~~~~~~
-
- XV.01) What uucp, news, and mail software works under Linux ?
-
- ANSWER:
- Just about everything, most with no (or minimal) patching required...
-
- The following is a quick but not all-inclusive list of software known to work
- under Linux:
-
- UUCP - Taylor UUCP 1.04
- News transport - Cnews 12/22/91 patchdate (no 'optional' speedups)
- Cnews 'performance release' (needs patching)
- INN 1.4 (needs patching)
- dynafeed
- nntp 1.5.11 'reference' release, slurp 1.05
- News readers - tin-1.2-p0
- trn-2.5 (probably also 3.0)
- nn-6.4.18
- tass
- rn4.4
- waffle 1.65
- Mail transport - smail2.5
- smail3.1.28
- sendmail5.65c+IDA
- Mail program - elm2.4.21 (probably also 2.4.22)
- pine
- procmail
- deliver
-
- XV.02) So where are the sources ?
-
- ANSWER:
- At your friendly neighborhood archive site where you find sources normally.
- Consult archie for a list.
-
- Config files for the portions of UUCP/News/Mail currently in the SLS
- distribution of Linux can be found on sunsite.unc.edu in the file
- sunsite.unc.edu:/pub/Linux/system/Mail/newspak-1.4.tar
-
- XV.03) Do I really need the sources ?
-
- ANSWER:
- Yes, if you want to *really* understand how the pieces are configured and
- how they fit together. If you already know how...probably not unless you
- want to change the paths used or do custom patching for some reason.
-
- There is considerable documentation in the sources that doesn't get
- "installed" that helps fill in the blanks between what you need to know, and
- what you can figure out.
-
- XV.04) How do I get my system a news/mail/uucp feed ?
-
- ANSWER:
- Please see the "how to become a USENET site" periodic posting
- in news.answers
-
-
- XV.B. UUCP
- ~~~~~~~~~~
-
- XV.05) Why do I get 'timeout' on connections when I upgraded to
- uucp-1.04 ?
-
- ANSWER:
- If you use a 'Direct' device in the Devices file, there's now a
- 10 second timeout compiled in. Make the name of the Device anything
- other than 'Direct'.
-
- XV.06) Why doesn't anonymous uucp seem to work ?
-
- ANSWER:
- The SLS anonymous uucp only works in Taylor mode because it's
- compiled with HAVE_TAYLOR_CONFIG. If you want to do anon uucp in HDB
- mode, you'll have to recompile the sources with just HDB defined.
-
- HDB mode also seems rather particular about things like blank spaces
- and blank lines in your Permissions file. If you get log file entries
- that indicate 'no permission' for anon uucp, a good place to start is
- to make sure that there are no blank lines (comment 'em out).
-
-
- XV.C News
- ~~~~~~~~~
-
- XV.07) What newsreader is best ?
-
- ANSWER:
- No way I'll open that can of worms other than to say that you
- definitely want something with "kill files" and probably want
- something with 'threads'.
-
- For what little it's worth, I use 'nn'.
-
- XV.08) with trn - why do I get the message 'dbinit failed' ?
-
- ANSWER:
- Because you didn't run mthreads from cron to keep the threads database
- up-to-date.
-
- XV.09) why is my 'nn' database getting continuously corrupted ?
-
- ANSWER:
- If you built it from sources and you asked for the 'words' method of
- building the database, it will definitely get corrupted if your
- filesystem doesn't handle long filenames (ie...comp.os.linux.announce
- is more than 14-characters). Build it with the 'by-number' way of
- creating the database and you'll be fine.
-
- XV.10) why can't I post to moderated groups ?
-
- ANSWER:
- Probably because the newsreader is trying to call /bin/mail to send
- the mail and it doesn't like it. Replace the /bin/mail in SLS with
- the port of mailx-5.3a.tar.z from the pub/Linux/system/Mail dir on
- sunsite.unc.edu and make it mode 2755 and group mail (like 'elm') and
- you'll be all set.
-
- Another possibility is that you have a moderated newsgroup set up on
- your local system as not-moderated and somebody upstream is quietly
- deleting the article (some system's software, not a person). Make
- sure you run a 'checkgroups' every now and then when the checkgroups
- article rolls by in news.admin every few weeks.
-
- XV.11) Why do I have problems that appear to be permission-related ?
-
- ANSWER:
- All the stuff in /usr/local/lib/news should be news.news except
- /usr/local/lib/news/setnewsids which should be setuid root.
-
- Past versions of SLS had no 'news' group or user by default, which
- caused lots of problems for people if they installed the news
- software *before* they added the 'news' group and user.
-
- XV.12) Why doesn't SLS have the 'Performance Release' of C-news?
- INN ? NNTP ?
-
- ANSWER:
- Because SLS can't have *everything*. It has the pre-performance C-news
- because it's a very fast and stable implementation for non-nntp sites
- that fits the needs of a normal uucp-only site. If you're that into
- having the most current of everything, you should probably be building
- it from the sources.
-
- XV.13) Why does doexpire say "severe space shortage" when there's
- lots of room ?
-
- ANSWER:
- Because it can't read /etc/mtab. Make it mode 644. This happens
- when you unmount a mounted filesystem by root with a umask that
- doesn't permit world-read of files owned by root.
-
- XV.14) How do I set up NNTP?
-
- ANSWER:
- Please see the extended description from Matt Welsh in the
- UUCP-NEWS-MAIL-FAQ that appears routinely in c.o.l.a.
-
-
- XV.D. Mail
- ~~~~~~~~~~
-
- XV.15) Why is my hostname.domainname not in my headers and
- something funky's there ?
-
- ANSWER:
- Because you didn't edit one or more of the following files like the
- README.linux files in the lib directories told you to:
-
- /usr/local/lib/smail/paths
- /usr/local/lib/smail/config
- /usr/local/lib/elm/elm.rc
-
- XV.16) Why can't elm write to my mailbox ?
-
- ANSWER:
- You need elm and filter to be mode 2755 and group mail
- and also have /usr/spool/mail mode 775 and group mail.
-
-
- XV.17) is sendmail+IDA available for Linux instead of smail ?
-
- ANSWER:
- Yes !!! I've recently switched from smail to sendmail+IDA from the binary
- distribution on sunsite.unc.edu and it works great...and I'm a uucp-only
- site. Look in pub/Linux/system/Mail for it...
-
-
-
- ===================8<==========>8================
-
-
- --
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # LaBRI | #
- # 351 cours de la Liberation | e-mail: corsini@geocub.greco-prog.fr #
- # 33405 Talence Cedex | e-mail: corsini@labri.u-bordeaux.fr #
- # | #
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- --
- There will be a sig when our local net is reliable.
- For now, I would rather stay anonymous.
-